﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Data;

namespace prjCompras
{
    public partial class frmProcAprovarRespostaCotacao : FormProcessoPadrao.FormProcessoPadrao
    {
        public frmProcAprovarRespostaCotacao()
        {
            InitializeComponent();
        }

        private void frmProcAprovarRespostaCotacao_Load(object sender, EventArgs e)
        {
            insereTextoProcesso(" Aprovar Resposta da Cotação");
            string sql = @"select r.Codigo, r.CNPJFornecedor, f.Nome, r.DataEntrega, r.ValorFrete
                             from RespostaCotacao r,
  	                              Fornecedor f
                            where r.PedidoGerado = 0
                              and f.CNPJ = r.CNPJFornecedor
                              and r.Codigo in
                                  (select rc.Codigo
                                          from RespostaCotacao rc,
			                                   RespostaCotacaoMaterial rcm
	                                     where rc.Codigo = rcm.CodigoRespostaCotacao
	                                       and rcm.Situacao = 0)";
            dtgrdvwRespostaCotacao.DataSource = Conexao.getInstance.executeQuery(sql);
            dtgrdvwRespostaCotacao.Columns[0].HeaderText = "Código";
            dtgrdvwRespostaCotacao.Columns[1].HeaderText = "CNPJ";
            dtgrdvwRespostaCotacao.Columns[2].HeaderText = "Fornecedor";
            dtgrdvwRespostaCotacao.Columns[3].HeaderText = "Data de Entrega";
            dtgrdvwRespostaCotacao.Columns[4].HeaderText = "Valor do Frete";
            campos = new List<string>();
        }

        private void dtgrdvwRespostaCotacao_SelectionChanged(object sender, EventArgs e)
        {
            if (dtgrdvwRespostaCotacao.RowCount > 0)
            {
                string codigo = dtgrdvwRespostaCotacao.CurrentRow.Cells[0].Value.ToString();
                string sql = @"select m.Codigo, 
                                      m.Nome, 
                                      rcm.ValorUnitario, 
                                      rcm.QtdAtendida, rcm.ValorUnitario * rcm.QtdAtendida ValorTotal,
                                      'Aprovado' Acao
                                 from RespostaCotacaoMaterial rcm,
                                      Material m
                                where rcm.CodigoMaterial = m.Codigo
                                  and rcm.CodigoRespostaCotacao = " + codigo;
                dtgrdvwMateriasResposta.DataSource = Conexao.getInstance.executeQuery(sql);

                dtgrdvwMateriasResposta.Columns[0].HeaderText = "Código";
                dtgrdvwMateriasResposta.Columns[1].HeaderText = "Material";
                dtgrdvwMateriasResposta.Columns[2].HeaderText = "Valor Unitário";
                dtgrdvwMateriasResposta.Columns[3].HeaderText = "Quantidade Atendida";
                dtgrdvwMateriasResposta.Columns[4].HeaderText = "Valor Total";
                dtgrdvwMateriasResposta.Columns[5].HeaderText = "Ação";

                for (int i = 0; i < dtgrdvwMateriasResposta.Columns.Count; i++)
                {
                    dtgrdvwMateriasResposta.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
                }
            }
        }

        private void dtgrdvwMateriasResposta_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dtgrdvwMateriasResposta.CurrentRow.Cells[5].Value.ToString() == "Aprovado")
            {
                dtgrdvwMateriasResposta.CurrentRow.Cells[5].Value = "Reprovado";
            }
            else
            {
                dtgrdvwMateriasResposta.CurrentRow.Cells[5].Value = "Aprovado";
            }
        }

        private void aprovarTodosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow r in dtgrdvwMateriasResposta.Rows)
            {
                r.Cells[5].Value = "Aprovar";
            }
        }

        private void reprovarTodosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow r in dtgrdvwMateriasResposta.Rows)
            {
                r.Cells[5].Value = "Reprovar";
            }
        }

        private void inverterAçãoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow r in dtgrdvwMateriasResposta.Rows)
            {
                if (r.Cells[5].Value.ToString() == "Aprovado")
                {
                    r.Cells[5].Value = "Reprovado";
                }
                else
                {
                    r.Cells[5].Value = "Aprovado";
                }
            }
        }

        public override bool metodo()
        {
            foreach (DataGridViewRow r in dtgrdvwMateriasResposta.Rows)
            {
                int situacao = 0;
                if (r.Cells[5].Value.ToString() == "Aprovado")
                {
                    situacao = 1;
                }
                else
                {
                    situacao = 2;
                }
                List<string> alt = new List<string>();
                alt.Add("Situacao = " + situacao.ToString());
                string sql = SqlCrud.getInstance.updateByIdComposto(ConstTabelas.RESPOSTACOTACAOMATERIAL, alt,
                    ConstTabelas.RESPOSTACOTACAOMATERIAL_PK, dtgrdvwRespostaCotacao.CurrentRow.Cells[0].Value.ToString(), 
                    ConstTabelas.RESPOSTACOTACAOMATERIAL_PK2, r.Cells[0].Value.ToString());

                if (Conexao.getInstance.execute(sql, false) == false)
                {
                    return false;
                }                
            }
            Conexao.getInstance.CommitTransacao();

            return true;
        }
    }
}
